package com.gexin.controller.system.plug;

import java.util.List;
import com.gexin.common.utils.SQLUtils;
import com.gexin.common.utils.StringUtil;
import com.gexin.core.web.SystemBaseController;
import com.gexin.model.plug.FileInfo;
import com.gexin.model.plug.FileTag;
import com.gexin.plugin.sqlinxml.SqlKit;
import com.jfinal.ext.route.ControllerBind;
import com.jfinal.plugin.activerecord.Db;

/**
 * 文件Api接口
 * @author 肖得明 2018-04-09
 */
@ControllerBind(controllerKey = "/system/plug/file/api", viewPath = "WEB-INF/system/")
public class FileApiManageController extends SystemBaseController {

	//获取登录的用户信息  如果资料库需要指定用户 分类 就改下面的代码
	public String  getUserid(){
		return "default";
	}
	/** 删除文件 /shangjia/file/del_file?file_id=1,1,2 **/
	public void file_edit() {
		Integer tag_id = getParaToInt("cid");
		String img_id = getPara("files");
		Db.update(String.format("update  t_file_info set cate=%s where id in(%s)",tag_id, img_id));
		success();
	}
	
	
	/** 删除文件 /shangjia/file/del_file?file_id=1,1,2 **/
	public void file_del() {
		int count = Db.update("DELETE from t_file_info  where id in("+ getPara("files") + ")");
		if (count > 0) {
			success(count);
		} else {
			fail("请稍后再试！");
		}
	}
	
	/** 删除分组信息 /shangjia/file/del_tag/id/type=1 **/
	public void cate_del() {
		//删除分组（分组ID：cid | 模式：mode -- 删除全部：all、仅删除分组：cate）
		Integer cid = getParaToInt("cid", 1);
		String  mode  =  getPara("mode");
		FileTag tag = FileTag.dao.findById(cid);
		if (tag == null) {
			fail("分组不存在！");
			return;
		}
		
		if (tag.delete()) {
			if ("cate".equals(mode)) {
				Db.update("update  t_file_info set cate=1 where cate=? and  user=?",tag.getId(),getUserid());// 把这个分组的文件移动到默认那个文件组里面去
			} else {
				Db.update("DELETE from t_file_info  where cate=? and  user=?",tag.getId(),getUserid());
			}
			success();
		} else {
			fail("请稍后再试！");
		}
	}
	
	
	/**
	 * 分修改  / 修改分组名称（分组ID：cid | 名称：name）
	 */ 
	public void cate_edit(){
	   String  name  =  getPara("name");
	   Integer cid = getParaToInt("cid");
	   if(StringUtil.isBlank(name)){
		   fail("分组名称不能为空！");
		   return ;
	   }
	   
	   FileTag  tag =FileTag.dao.findById(cid);
	   if(tag==null){
		   fail("查询的对象不存在！");
		   return;
	   }
	   tag.setName(name);
	   tag.update();
	   tag.setResId(getUserid());
	   success(tag);
	}
	
	
	/**
	 * 分组添加
	 */
	public void cate_add(){
	   String  name  =  getPara("name");
	   if(StringUtil.isBlank(name)){
		   fail("分组名称不能为空！");
		   return ;
	   }
	   FileTag  tag =new FileTag();
	   tag.setName(name);
	   tag.setUser(getUserid());
	   tag.save();
	   success(tag);
	}
	//获取分类列表
	public  void getCateList(){
		List<FileTag>  tag_list =  FileTag.dao.find(SqlKit.sql("file.getCateList") +" where user in('sys','"+getUserid()+"')");
		success(tag_list);
	}
	//获取文件列表 数据
	public void file_list() {
		//size=100000  page=1  type=all  cid=1
		String  type    =  getPara("type","all");
		Integer cid   =getParaToInt("cid",1);
		Integer page  = getParaToInt("page",1); 
		Integer size  = getParaToInt("size",1); 
		SQLUtils  sql = new SQLUtils(" from t_file_info  where  cate="+cid);
		if(!"all".equals(type) &&  type!=null){
			sql.whereEquals("type", type);
		}
		sql.whereEquals("user", getUserid());
		
		List<FileInfo>  list =FileInfo.dao.paginate(page, size, "select  id,name,url,size,width,height,type,cate ", sql.toString()).getList();
		if(list.size()>0){
			success(list);
		}else{
			fail();
		}
	}
	

	// 上传文件
	public void upfile() {
		//文件地址（url）、文件名称（name）图片宽度（width）、图片高度（height）
		//文件大小（size）、文件类型（type）
		//文件分组（cate）
		String filename = getPara("name");
		Integer width = getParaToInt("width", 0);
		Integer heigth = getParaToInt("height", 0);
		String type = getPara("type");
		String url = getPara("url");
		Integer tag_id = getParaToInt("cate");
		FileInfo file = new FileInfo();
		file.setHeight(heigth);
		file.setWidth(width);
		file.setName(filename);
		file.setUser(getUserid());
		file.setCate(tag_id);
		file.setSize(getPara("size"));
		file.setUrl(url);
		file.setType(type);
		if (file.save() == true) {
			success(file);
		} else {
			fail("保存失败请稍后再试！");
		}
	}
}
